/**
 * 
 */
package t4j.typeinfo;

import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.regex.Pattern;

/**
 * @author sz
 *
 * create time：2012-12-18
 */
public class ShowMethod {
	 private static String usage =
		    "usage:\n" +
		    "ShowMethods qualified.class.name\n" +
		    "To show all methods in class or:\n" +
		    "ShowMethods qualified.class.name word\n" +
		    "To search for methods involving 'word'";
	 
	 private static Pattern p = Pattern.compile("\\w+\\.");
	 
	 public static void main(String[] args) {
		
		 String className[] ={"t4j.typeinfo.ShowMethod"};
		 
		 if(className.length < 1){
			 System.out.println(usage);
			 
			 System.exit(0);
		 }
		 
		 int lines = 0 ;
		 
		 try {
			Class<?> c = Class.forName(className[0]);
			
			Method[] methods = c.getMethods();
			
			Constructor[] ctors = c.getConstructors();
			
			if(className.length == 1){
				
				for(Method method : methods)
					System.out.println(p.matcher(method.toString()).replaceAll(""));
				
				for(Constructor ctor: ctors)
					System.out.println(p.matcher(ctor.toString()).replaceAll(""));
				
				lines = methods.length + ctors.length;
				
			}else{
				for(Method method : methods)
					if(method.toString().indexOf(className[1]) != -1){
						System.out.println(p.matcher(method.toString()).replaceAll(""));
						
						lines++;
					}
				
				for(Constructor ctor : ctors)
					if(ctor.toString().indexOf(className[1]) != -1){
						System.out.println(p.matcher(ctor.toString()).replaceAll(""));
					
						lines++;
					}	
			}
			
			
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			System.out.println("No such clas:" + e);
		}
		 
	}
}
